package jwcb.admin.api.config.frign;


import jakarta.validation.constraints.NotBlank;
import jwcb.admin.api.config.domain.dto.ArgumentDTO;
import jwcb.admin.api.config.domain.dto.DictionaryDataDTO;
import jwcb.admin.api.config.domain.vo.DictionaryDataVo;
import jwcb.javapjframework.common.domain.domain.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

@Validated
@FeignClient(contextId="dictionaryFeignClient",value="jwcb-admin")
public interface DictionaryFeignClient {

    /**
     * 获取某个字典类型下的所有字典数据
     * @param typeKey 字典类型键
     * @return 字典数据列表
     */
    @GetMapping("/dictionary_data/type")
    List<DictionaryDataDTO> selectDictDataByType(@RequestParam String typeKey);


    /**
     * 获取多个字典类型下的所有字典数据
     * @param typeKeys 字典类型键列表
     * @return 字典数据列表
     */
    @PostMapping("/dictionary_data/types")
    Map<String,List<DictionaryDataDTO>> selectDictDataByTypeKeys(@RequestBody List<String> typeKeys);


    /**
     * 根据dataKey获取字典数据
     * @param dataKey 字典数据键
     * @return 字典数据
     */
    @GetMapping("/dictionary_data/data_key")
    DictionaryDataDTO selectDictDataByDataKey(@NotBlank(message = "dataKey参数不能为空") @RequestParam String dataKey);

    /**
     * 根据多个dataKey获取字典数据
     * @param dataKeys 字典数据键列表
     * @return 字典数据
     */
    @GetMapping("/dictionary_data/data_keys")
    List<DictionaryDataDTO> selectDictDataByDataKeys(@RequestBody List<String> dataKeys);


}
